Praktikum Deep Learning

Optimierung Teil 2

Beispiel anhand MNIST

Die MNIST-Datenbank (Modified National Institute of Standards and Technology database) ist eine öffentlich verfügbare Datenbank von handgeschriebenen Ziffern. Die MNIST-Datenbank besteht aus 60.000 Beispielen (28x28 grayscale Bilder) im Trainingsdatensatz und 10.000 Beispielen im Testdatensatz.

MnistExamples.png

Wir werden eine einfache Neurale Netzwerk aus 2 hidden Schichten (500 bzw. 50 Knoten) bilden und werden uns Loss Landschaft für 2 Gewichte in letzten Layer anschauen. Überwachung diese 2 Gewichte lässt sich wieder qualitative Unterschied zwischen Algorythmen zeigen.

structure.png

Lassen uns anfangen. Wir importieren alle benötigte Module und bereiten Daten vor.

Die Eingabedaten sind 60,000 grayscale 28x28 Bilder.
D.h. die X-Werte sind die Zahlen zwischen 0 und 255. Für Normalisierung reicht sie durch 255 zu teilen.
Wir werden auch sie aus 28x28 Matrice zum 1x784 Vektor strecken.

Als Aktivierung-Funktion wird Sigmoid benutzt $S(x)=\frac{1}{1+e^{-x}}$

sigmoid.png

Plot der Loss Landschaft für unterschiedliche Anzahl von Samplen:

Lassen uns Netzwerk trainieren, aber nur die Gewichte, die wir überwachen.

Method:  SGD
Method:  SGD-Momentum
Method:  Nesterov-SGD
Method:  RMSProp
Method:  Adam
Fertig!

3D Ansicht

Anmerkung: Die Linien sind absichtlich höher dargestellt.

Contour Plot